<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');

require_once APPPATH . 'controllers/admin.php';

/**
 * Контроллер создания изображения
 *
 * @package CoreFramework
 * @version 1.0
 * @author Gennadiy Kozlenko
 */
class Admin_Update_Image extends Admin {
   
   /**
    * Идентификатор изображения
    *
    * @access private
    * @var integer
    */
   var $_id_image = 0;
   
   /**
    * Конструктор класса
    *
    * @access public
    * @return Admin_Update_Image
    */
   function Admin_Update_Image() {
      parent::Admin();
      $this->set_menu(4, 2);
      // Выковыриваем идентификатор
      if (false !== $this->input->get('id')) {
         $this->_id_image = (int) $this->input->get('id');
      }
      // Подгружаем модельку
      $this->load->model('m_image');
      $this->m_image->set_id($this->_id_image);
   } // end Admin_Update_Image
   
   /**
    * Метод по умолчанию
    *
    * @access public
    */
   function index() {
      $data = array();
      // Стандартные поля
      $title = $this->m_image->get('title');
      $image = $this->m_image->get('image');
      // Валидируем и, если нужно, изменяем баннер
      if (false !== $this->input->post('edit')) {
         $this->load->library('validation');
         $rules = array(
            'title' => 'trim|required|max_length[100]'
         );
         $this->validation->set_rules($rules);
         $result = $this->validation->run();
         // Получаем из поста поля
         $title = $this->validation->title;
         // Получаем изображение
         $config = array(
            'upload_path'   => $this->config->item('upload_path'),
            'allowed_types' => 'gif|jpg|png',
            'max_size'      => 1024,
            'encrypt_name'  => true
         );
         $this->load->library('upload', $config);
         if ($this->upload->do_upload('image')) {
            $image_data = $this->upload->data();
            // Перемещаем изображение в нужную папку
            $path = 'data/images/' . substr($image_data['file_name'], 0, 2) . '/';
            $full_path = BASEPATH . '../' . $path;
            if (!file_exists($full_path)) {
               mkdir($full_path, 0777, true);
            }
            if (copy($image_data['full_path'], $full_path . $image_data['file_name'])) {
               // Все удачно прошло
               $image = $path . $image_data['file_name'];
            } else {
               // Неудалось закачать файл
               $this->errors->set('image', $this->lang->line('upload_destination_error'));
               $result = false;
            }
            // Удаляем изображение из временной папки
            @unlink($image_data['full_path']);
         } else {
            if (!is_uploaded_file($_FILES['image']['tmp_name']) && '' != $this->input->post('hidden_image')) {
               $image = $this->input->post('hidden_image');
            } else {
               $image = '';
               $this->errors->set('image', $this->upload->display_errors('', ''));
               $result = false;
            }
         }
         
         if ($result) {
            // Если проверки пройдены успешно, сохраняем
            $this->m_image->set('title', $title);
            $this->m_image->set('image', $image);
            // Сохраняем изображение в базу
            if ($this->m_image->update()) {
               if (0 == $this->_id_image) {
                  $this->set_message($this->lang->line('add_image_succ'), 'info', true);
               } else {
                  $this->set_message($this->lang->line('edit_image_succ'), 'info', true);
               }
               $this->redirect('admin_manage_images');
            }
            // Если сюда пришли, значит не все в порядке...
            if (0 == $this->_id_image) {
               $this->set_message($this->lang->line('add_image_error'), 'error');
            } else {
               $this->set_message($this->lang->line('edit_image_error'), 'error');
            }
         }
      }
      // Забиваем в дату поля
      $data['id_image'] = $this->_id_image;
      $data['title'] = htmlspecialchars($title);
      $data['image_exists'] = !empty($image) ? array(array()) : array();
      $data['image'] = $image;
      // Выводим
      $view = 'admin/edit_image.html';
      if (0 == $this->_id_image) {
         $view = 'admin/add_image.html';
      }
      $this->set_content($this->parser->parse($view, $data, true));
      $this->display();
   } // end index
   
}
